package com.ruoyi.common.core.domain.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 用户提现记录实体类
 */
@Data
public class WithdrawalRecord {
    /**
     * 主键ID，自增
     */
    private Long id;

    /**
     * 关联用户ID（系统用户ID或支付宝用户ID）
     */
    private Long userId;

    /**
     * 支付宝账户id
     */
    private Long zfbAccountId;

    /**
     * 关联的银行账户ID（外键，指向user_bank_account.id）
     */
    private Long bankAccountId;

    /**
     * 提现订单号（唯一，建议使用UUID或雪花ID）
     */
    private String withdrawalNo;

    /**
     * 提现金额（单位：元）
     */
    private BigDecimal amount;

    /**
     * 币种（如CNY、USD）
     */
    private String currency;

    /**
     * 手续费金额
     */
    private BigDecimal feeAmount;

    /**
     * 手续费率（如0.0015表示0.15%）
     */
    private BigDecimal feeRate;

    /**
     * 银行卡号后4位（关联查询时填充）
     */
    private String cardNoLast4;

    /**
     * 银行名称（关联查询时填充）
     */
    private String bankName;

    /**
     * 状态：0-处理中，1-成功，2-失败，3-已撤销
     */
    private Integer status;

    /**
     * 提现申请时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private Date requestTime;

    /**
     * 提现处理完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC")
    private Date processTime;

    /**
     * 失败原因（status=2时填写）
     */
    private String failReason;

    /**
     * 提现渠道：ALIPAY-支付宝，WECHAT-微信，BANK-银行卡
     */
    private String channel;

    /**
     * 渠道方订单号（如支付宝交易号）
     */
    private String channelOrderNo;

    /**
     * 审核状态：0-审核中，1-通过，2-驳回
     */
    private Integer auditStatus;
}

